ViewPager+TabLayout 您所在的位置:网站首页 tablayout viewpage 使用示例 ViewPager+TabLayout

ViewPager+TabLayout

2023-03-13 19:09| 来源: 网络整理| 查看: 265

ViewPager+TabLayout

1.View

Pa

ger

结合View

实现导航

①创建布局并找控件

②获取数据集合

③创建适配器:destroyItem⽅法⾥删除

super.destroyItem(container,position,object);

,否则报错

④设置适配器

getCount()   // 

当前有效视图的个数

instantiateItem     //

创建指定位置的页⾯视图

destroyItem    //

移除⼀个给定位置的页⾯

isViewFromObject       //

⽤来判断

instantiateItem

数所返回来的

Key

与⼀个页⾯视图是否是代表的同⼀个视图

gment实现导航

2.View

Pa

ger

结合Fr

a

gm

ent实现导航

①创建布局并找控件

②获取数据集合:获取fragment的集合fragments

③创建适配器:FragmentPagerAdapter和 FragmentStatePagerAdapter的对⽐以及内部⽅法

④设置适配器

⑴F

r

ag

m

e

ntPag

e

r

A

d

ap

te

r

和 F

r

ag

m

e

ntState

Pag

e

r

A

d

ap

te

r

的对⽐

①相同点:

FragmentPagerAdapter和FragmentStatePagerAdapter都继承⾃PagerAdapter

②不同点:

卸载不再需fragment时,各⾃采⽤的处理⽅法不同

①FragmentPagerAdapter(detach)

对于不再需要的fragment, FragmentPagerAdapter会选择调⽤事务的detach(Fragment)⽅法来处理它,⽽⾮

remove(Fragment)⽅法。也就是说, FragmentPagerAdapter只是销毁了fragment的视图, fragment实例还保留

在FragmentManager中。因此,FragmentPagerAdapter创建的fragment永远不会被销毁

②FragmentStatePagerAdapter(remove)

会销毁不需要的fragment。事务提交后, activity的FragmentManager中的fragment会被彻底移除。

FragmentStatePagerAdapter类名中的“state”表明:在销毁fragment时,可在onSaveInstanceState(Bundle)⽅

法中保存fragment的Bundle信息。⽤户切换回来时,保存的实例状态可⽤来恢复⽣成新的fragment

总结:在destroyItem()⽅法中,FragmentStatePagerAdapter调⽤的是remove()⽅法,适⽤于页⾯较多的情况;FragmentPagerAdapter

调⽤的是detach()⽅法,适⽤于页⾯较少的情况。但是有页⾯数据需要刷新的情况,不管是页⾯少还是多,还是要⽤

FragmentStatePagerAdapter,否则页⾯会因为没有重建得不到刷新

⑵F

r

ag

m

e

ntPag

e

r

A

d

ap

te

r

和 F

r

ag

m

e

ntState

Pag

e

r

A

d

ap

te

r

的内部⽅法

①FragmentPagerAdapter



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有